#-*-coding:utf-8-*-

from copy import deepcopy
import math

# 1 变量作用域查找顺序LEGB
# L local 局部作用域,当前函数
# E Enclosing 父函数
# G Global 全局作用域
# B buildIn 内置作用域


# 2 可变对象和可hash 的关系
# list dict 是可变对象,是不可hash的
# 只有不可变对象是可hash的




if __name__ == "__main__":
# 3 map,reduce,filter 使用
# map 对数组里面每个元素进行相同的操作，
# 比如求平方
	# map 可以传进去多个list
	mapList = map(lambda x,y:math.pow(x,2) if math.pow(x,2) > math.pow(y,2) else math.pow(y,2) ,range(5),[1,3,5,8,2])
	# 结果中没有25
	print mapList

# reduce 把上次操作的结果参与到当前操作中
# 比如求和
	reduceRet = reduce(lambda x ,y:x+y,range(5))
	print reduceRet

# filter 用于删选符合添加的对象
# 比如求奇数，偶数
	filterList = filter(lambda x:  x % 2 == 0 ,range(10))
	print filterList
	pass
	print [x for x in xrange(10) if x % 2 == 0]